Pakkaaja pack on yleisempi ja tehokkaampi ohjainten järjestelijä kuin asettaja place. Pakkaajalle määritellään aseteltavat ohjaimet ja niid en järjestys toisiinsa nähden, jonka jälkeen pakkaaja sijoittelee ohjaimet ikkunaan. Ohjelmoijan ei tarvitse huolehtia ikkunan koordinaateista tai esimerkiksi ikkunan koon muuttamisesta, vaan pakkaaja asettelee jokaisen muutoksen jälke en ohjaimet omille paikoilleen.
Esimerkiksi
pack .ohjain1 .ohjain2 -side top
asettaa ohjaimet .ohjain1 ja .ohjain2 päällekkäin ikkunaan -side-option arvosta top johtuen.
Pakkaajalle määritellään optioita, joiden avulla se tietää halutun järjestyksen. Mahdollisia optioita on lueteltu seuraavassa listassa:
-after window |
määrittelee, minkä ohjaimen jälkeen käsiteltävä ohjain asetetaan. |
-anchor side |
määrittelee ohjaimen paikan ikkunan tai toisen kehyksen sisällä. Ohjaimen voi sijoittaa ikkunan tai kehyksen sisällä ylös keskelle (n), ylös oikealle (ne), oikelle (e), alas oikealle (se), alas (s), alas vasemmalle (sw), vasemmalle (w), ylös vasemmalle (nw) tai keskelle (center). |
-before window |
määrittelee, mitä ohjainta ennen käsiteltävä ohjain asetetaan. |
-expand boolean |
ohjain ottaa käyttöönsä kaiken ylimääräisen tilan ikkunassa. |
-fill style |
määrittelee ohjaimen kasvun suunnan (none, x, y, both). |
-in master |
määrittelee, minkä ikkunan sisään ohjain sijoitetaan. |
-ipadx distance |
määrittelee ohjaimen sisälle jätettävän ylimääräisen tilan x-suunnassa. |
-ipady distance |
määrittelee ohjaimen sisälle jätettävän ylimääräisen tilan y-suunnassa. |
-padx distance |
määrittelee ohjaimen ulkopuolelle jätettävän ylimääräisen tilan x-suunnassa. |
-pady distance |
määrittelee ohjaimen ulkopuolelle jätettävän ylimääräisen tilan y-suunnassa. |
-side side |
määrittelee pakkausjärjestyksen ohjainten kesken (top, bottom, left, right). Oletuksena top. |
Seuraavassa esimerkkiohjelmassa käytetään eri pakkausoptioita hyväksi (kuva 5.18).
frame .top
frame .bottom -bd 2 -relief sunken
label .top.etiketti -bitmap @/usr/include/X11/bitmaps/flagdown
label .top.kirjoitus -text "E-mail:"
entry .top.syotto -width 15
button .bottom.ok -text Ok -command {exit}
button .bottom.cancel -text Cancel -command {puts "heippa"}
pack .top.etiketti -anchor ne ;# pakataan ylös oikealle
pack .top.kirjoitus -anchor w ;# pakataan vasemmalle
pack .top.syotto -anchor sw ;# pakataan alas vasemmalle
pack .bottom.ok .bottom.cancel -side top -fill x ;# pakataan molemmat painikkeet samanlevyisiksi
pack .bottom.ok -pady 2m ;# määrätään ohjaimen ympärille tilaa y- suunnassa
pack .bottom.cancel -ipadx 2m ;# määrätään ohjaimen sisälle tilaa x-suunnassa
pack .top .bottom -side top
Ensin ob luotu kaksi etikettiä, kuva ja tekstiä sekä syöttökenttä. Sen lisäksi on tehty kaksi painiketta. Ensin on pakattu ylätaso .top siten, että kuva sij oitetaan oikeaan ylänurkkaan, teksti vasemmalle ja syöttökenttä kehyksen .top alareunaan vasemmalle. Sen jälkeen on pakattu kehyksen .bottom sisään kaksi painiketta päällekkäin. Ok-painike piirtyy Cancel-painikkeen levyisenä option -fill x avulla.
Kuva 5.18. Esimerkki pakkaajasta.